# !/usr/bin/env python3
# -*- coding: utf-8 -*-

'此模块负责为branch模块提供方法'

from collections import Counter


def get_html_index() -> None:
    """生成模版数据

    index.html模板不需要数据进行html模板渲染
    这里仅为了便于列表循环

    Args:
        None

    Returns:
        None

    Raises:
        None
    """
    return None


def get_html_overall(data) -> map:
    """生成模版数据

    将原始数据生成overall.html可用的模板数据

    Args:
        data: pandas.DataFrame对象，用来生成可用于html模板渲染的数据

    Returns:
        map:
            list: 用于渲染列表的模版数据
            tip: 应用于在list上显示数量
            table: 用于渲染table行划分的数据

    Raises:
        None
    """
    # 生成<list>数据
    dates = data['ym'].values.tolist()
    date_list = list(set(dates))
    date_list.sort()
    date_list.insert(0, '全部')
    # 生成tip
    index, _ = data.shape
    tip = Counter(dates)
    tip.setdefault('全部', index)
    # 生成<table>数据
    table = []
    for v in range(0, index):
        table.append(data.iloc[v].values.tolist())
    return {
        'list': tuple(date_list),
        'tip': tip,
        'table': tuple(table)
    }


def get_js_index() -> list:
    """生成模版数据

    将原始数据生成index.js可用的模板数据

    Args:
        None

    Returns:
        list: 用于点击按钮打开相应连接

    Raises:
        None
    """
    return [
        './overall.html'
    ]


def get_js_overall(data) -> map:
    """生成数据

    将原始数据按照js模版的需要生成用来渲染模版的数据

    Args:
        data: pandas.DataFrame对象，用来生成可用于js模板渲染的数据

    Returns:
        map:
            list: 列表点击时隐藏或现实表格的class列标值
            img: 包含所有图片的完整地址

    Raises:
        None
    """
    # 生成jslist数据
    dates = data['ym'].values.tolist()
    # date_list = []
    # for v in dates:
    #     date_list.append('date-{}-{}'.format(v.split('-')[0], v.split('-')[1])) # noqa E501
    date_list = list(set(dates))
    date_list.sort()
    date_list = list(map(lambda x: 'date-{}'.format(x), date_list))
    date_list.insert(0, 'date-all')
    # 生成jsimage数据
    data_img = data[data.traceables != '/']
    return {
        'list': date_list,
        'img': list(map(lambda x: '{}{}'.format('./assets/', x), data_img['traceables'].values.tolist())) # noqa E501
    }
